library("phyloseq")
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
library("ggplot2")
library("plyr")
library("vegan")
library("grid")
library("directlabels")
library("knitr")
library("clustsig")
library("ellipse")
setwd("./data")
opts_knit$set(root.dir = "./data", fig.keep='high')
#opts_chunk$set(dev = 'pdf', fig.path="figures/spist/")
First .shared ‘otu matrix’ from mothur
sharedFile = read.table("micro.final.shared")
sharedFile = t(sharedFile)
rownames(sharedFile) = sharedFile[,1]
colnames(sharedFile) = sharedFile[2,]
sharedFile = sharedFile[,2:234]
sharedFile = sharedFile[4:37368,]
class(sharedFile) <- "numeric"
Import subsampled otu matrix (7779 seqs)
sharedsubFile = read.table('micro.final.clean.0.03.subsample.shared')
sharedsubFile = t(sharedsubFile)
rownames(sharedsubFile) = sharedsubFile[,1]
colnames(sharedsubFile) = sharedsubFile[2,]
sharedsubFile = sharedsubFile[,2:219]
sharedsubFile = sharedsubFile[4:14839,]
class(sharedsubFile) <- "numeric"
Import taxonomy file from mothur
taxFile = read.table('micro.final.0.03.cons.taxonomy', header=T, sep='\t')
rownames(taxFile) = taxFile[,1]
taxFile = taxFile[,2:8]
taxFile = as.matrix(taxFile)
Import metadata - ie. site, type, etc..
metaFile = read.table('pools.metaData2', header=T, sep='\t')
rownames(metaFile) = metaFile[,1]
metaFile = metaFile[,2:8]
OTU = otu_table(sharedFile, taxa_are_rows = TRUE)
OTUsub = otu_table(sharedsubFile, taxa_are_rows = TRUE)
TAX = tax_table(taxFile)
META = sample_data(metaFile)
physeq = phyloseq(OTU, TAX, META)
physeqSub = phyloseq(OTUsub, TAX, META)
physeqSub
## phyloseq-class experiment-level object
## otu_table() OTU Table: [ 14836 taxa and 214 samples ]
## sample_data() Sample Data: [ 214 samples by 7 sample variables ]
## tax_table() Taxonomy Table: [ 14836 taxa by 7 taxonomic ranks ]
Get rid of any OTUs not present in any samples and get relative abundance
microSub <- prune_taxa(taxa_sums(physeqSub) > 0, physeqSub)
microSubRel = transform_sample_counts(microSub, function(x) x / sum(x) )
microSubRelFilt = filter_taxa(microSubRel, function(x) mean(x) > 1e-5, TRUE)
Take a look at the bacteria classified to genus and to family. NOTE: have to do this on non-subsampled data as these aqarium samples get removed in this step because of low sequence numbers (~3000)
spistAq = prune_samples(c("SPaq", "SPaq-rep2"), physeq)
spistAqrelAbund = transform_sample_counts(spistAq, function(x) x / sum(x) )
spistAqrelAbundFilt = filter_taxa(spistAqrelAbund, function(x) mean(x) > 1e-2, TRUE)
plot_bar(spistAqrelAbundFilt, fill="Genus")
plot_bar(spistAqrelAbundFilt, fill="Family")
Pretty cool! Still about 1/4 of the bacteria are Endozoicomonas
Ok let’s split the dataset into the S.pistillata samples, excluding replicates and the warmed ningaloo samples
microSubRelFiltSpist <- prune_samples(c("11","49-2","50-2","51-2","52-2","53-2","54-2","57-2","63-2","64-2","65-2","67-2","80-2","75-2","76-2","77-2","101","102","103","105","173","174","175","176","205","206","207","208","209","226","227","228","229","230","231","235","236","237","241","242","243","244","251","253","254","256","257","258","259","260","261","262","MIC-25","MIC-50","MIC-53","MIC-91","MIC-145","MIC-151","MIC-220","MIC-226","MIC-229","MIC-424","MIC-427","MIC-453","RS1","RS2","RS3","RS5","RS6","RS7","RS10","RS12","RS13","RS15","RS16","RS17","RS18","19-rep2","55-2-rep2","56-2-rep2","104-rep2","MIC-85-rep2"), microSubRelFilt)
microSubRelFiltSpistFilt = filter_taxa(microSubRelFiltSpist, function(x) mean(x) > 1e-2, TRUE)
spistBar <- plot_bar(microSubRelFiltSpistFilt, fill="Genus", title='Stylophora pistillata')
spistBar
Some variability between the samples but plenty of Endozoicomonas. I’ll facet out the sites to take a closer look.
microSubRelFiltSpistFilt = filter_taxa(microSubRelFiltSpist, function(x) mean(x) > 1e-2, TRUE)
spistBar <- plot_bar(microSubRelFiltSpistFilt, fill="Genus", title='Stylophora pistillata')
spistBar + facet_wrap(~site, scales='free')
Quite some variability in the microbial composition across the sites. Can see Endozoicomonas throughout the graph, athough it’s a little difficult to see. I’ll redo the graph with just endozoicomonas OTUs.
microSubRelFiltSpistEndo = subset_taxa(microSubRelFiltSpist, Genus=='Endozoicomonas(100)')
spistBarEndo <- plot_bar(microSubRelFiltSpistEndo, fill="Genus", title='Stylophora pistillata')
spistBarEndo + facet_wrap(~site, scales='free')
# add coloring for different Endozoicomonas OTUs
tax_table(microSubRelFiltSpistEndo) <- cbind(tax_table(microSubRelFiltSpistEndo), Strain=taxa_names(microSubRelFiltSpistEndo))
myranks = c("Genus", "Strain")
mylabels = apply(tax_table(microSubRelFiltSpistEndo)[, myranks], 1, paste, sep="", collapse="_")
tax_table(microSubRelFiltSpistEndo) <- cbind(tax_table(microSubRelFiltSpistEndo), catglab=mylabels)
microSubRelFiltSpistEndoFilt = filter_taxa(microSubRelFiltSpistEndo, function(x) mean(x) > 1e-2, TRUE)
plot_bar(microSubRelFiltSpistEndoFilt, fill="catglab", title='Stylophora pistillata') +
facet_wrap(~site, scales='free')
microSubRelFiltSpistEndoFilt = filter_taxa(microSubRelFiltSpistEndo, function(x) mean(x) > 1e-4, TRUE)
plot_bar(microSubRelFiltSpistEndoFilt, fill="catglab", title='Stylophora pistillata') +
facet_wrap(~site, scales='free')
Again quite a bit of variability between and within sites but can see Endozoicomonas at all the sites! Also very cool that many of the sites have their ‘own’ Endozoicomonas. Otu7 is only in Australia, while Otu15 is mostly in Indonesia but also pops up in the Red Sea, which might make sense.. Then the main Otu1 appears to dominate the pacific and Red Sea.
Note the change in y-axis numbers (relative abundance) across the different sites - at the American Samoan sites this number is very small.
The Red Sea has the most samples and is a bit hard to see at this scale - I’ll take a closer look at these reefs.
microSubRelFiltSpistFilt = filter_taxa(microSubRelFiltSpist, function(x) mean(x) > 1e-2, TRUE)
microSubRelFiltSpistFiltRedSea <- subset_samples(microSubRelFiltSpistFilt, site=="RedSea")
spistRedSea <- plot_bar(microSubRelFiltSpistFiltRedSea, aes(x=factor(Sample)), fill="Genus", title='Stylophora pistillata in the Red Sea')
spistRedSea + facet_wrap(~reef, scales="free_x")
We also collected some different Stylophora morphology types from the Red Sea reefs - one fatter fingered, reef-flat variatey and a thinner fingered, deeper variety. I decided to also facet out these morpho-types.
spistRedSea + facet_wrap(~morphology, scales="free_x")
spistRedSea <- plot_bar(microSubRelFiltSpistFiltRedSea, aes(x=factor(Sample)), fill="Order", title='Stylophora pistillata in the Red Sea')
spistRedSea + facet_wrap(~morphology, scales="free_x")
Quite cool! Looks like we definately have microbiome differences in the different Stylophora morphologies. The thicker shallower type seems to be more dominated by Endozoicomonas - this was also the type I used for the metagenome studies.
I guess the microbiome differences could be related to the different morphotype or it could just be related to depth?
Which distance measure to use?
dist_methods <- unlist(distance("list"))
dist_methods <- dist_methods[-(1:2)]
dist_methods <- dist_methods[-which(dist_methods == "ANY")]
plist <- vector("list", length(dist_methods))
names(plist) = dist_methods
for (j in dist_methods) {
iDist <- distance(microSubRelFiltSpistFilt, method = j)
iMDS <- ordinate(microSubRelFiltSpistFilt, "MDS", distance = iDist)
p <- NULL
p <- plot_ordination(microSubRelFiltSpistFilt, iMDS, color="site")
p <- p + ggtitle(paste("MDS using distance method ", j, sep=""))
plist[[j]] = p
}
df = ldply(plist, function(x) x$data)
names(df)[1] <- "distance"
p = ggplot(df, aes(Axis.1, Axis.2, color=site))
p = p + geom_point(size = 2, alpha = 0.5)
p = p + facet_wrap(~distance, scales = "free")
p = p + ggtitle("MDS on various distance metrics")
p
Pretty hard to decide on a distance metric I think - most people use Bray Curtis so guess I’ll use that - even though I’m pretty sure Pat Schloss (the mothur guy) doesn’t like this measure.
Use the braycurtis matrix to generate plots using nMDS and PCoA
mothurNMDS <- as.data.frame(read.table("micro.spist.0.03.braycurtis.0.03.lt.nmds.axes", header=T))
mothurPCOA <- as.data.frame(read.table("micro.spist.0.03.braycurtis.0.03.lt.pcoa.axes", header=T))
mothurNMDSspearman <- as.data.frame(read.table("micro.spist.0.03.spearman.corr.axes", header=T))
rownames(mothurNMDS) <- mothurNMDS[,1]
rownames(mothurPCOA) <- mothurPCOA[,1]
rownames(mothurNMDSspearman) <- mothurNMDSspearman[,1]
mothurNMDSmeta <- merge(mothurNMDS, metaFile, by = "row.names")
rownames(mothurNMDSmeta) <- mothurNMDSmeta[,1]
mothurPCOAmeta <- merge(mothurPCOA, metaFile, by = "row.names")
ggplot(mothurPCOAmeta, title='PCoA of Stylophora pistillata samples') +
geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplot <- ggplot(mothurNMDSmeta, title='nMDS of Stylophora pistillata samples') +
geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplot
mothurNMDSplot + geom_polygon(aes(x=axis2, y=axis3, fill = site), alpha=0.5) + ggtitle("nMDS of Stylophora pistillata samples")
I think the nMDS looks better - it explains more of the variation and spreads the samples better.
Modify shapes so can display the different reefs within the sites
mothurNMDSmeta.shape.names = unique(mothurNMDSmeta$reef)
mothurNMDSmeta.shape <- 1:(length(mothurNMDSmeta.shape.names))
names(mothurNMDSmeta.shape) <- mothurNMDSmeta.shape.names
mothurNMDSmeta.shape["samples"] <- 23
mothurNMDSplot <- ggplot(mothurNMDSmeta, title='nMDS of Stylophora pistillata with reef symbols') +
geom_point(aes(x=axis2, y=axis3, color=site, shape = reef)) +
scale_shape_manual(values = mothurNMDSmeta.shape) +
theme(legend.key.size=unit(0.3,"cm"))
mothurNMDSplot
Actually I think the grouping is much stronger by site rather than by reef. A few of the Ningaloo reefs group together but the Red Sea reefs seem to be all mixed together.
We can also overlay this plot with the OTUs that most contributed to the sample differences (generated using the indicator command in mothur) or by the spearman correlation
top10indicator = mothurNMDSspearman[c("Otu000004","Otu000007","Otu000019","Otu000045","Otu000095","Otu000384","Otu000502","Otu000035","Otu000032","Otu000015","Otu000142"),]
top10spearman = mothurNMDSspearman[c("Otu000001","Otu000019","Otu000054","Otu000005","Otu000007","Otu000110","Otu000045","Otu000142","Otu000014","Otu000031","Otu000062", "Otu000018"),]
arrowmatrix = top10spearman
arrowdf <- data.frame(labels = rownames(arrowmatrix), arrowmatrix)
# get taxonomic information from the original tax file
arrowdf <- data.frame(labels = taxFile[rownames(arrowmatrix),"Genus"], arrowmatrix)
arrowmap <- aes(xend = axis2, yend = axis3, x = 0, y = 0, alpha=0.5, shape = NULL, color = NULL, label = labels)
labelmap <- aes(x = axis2, y = axis3 + 0.04, shape = NULL, color = NULL, label = labels, size=1.5)
arrowhead = arrow(length = unit(0.02, "npc"))
mothurNMDSplot <- ggplot(mothurNMDSmeta) +
geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplotArrow <- mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black", arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
mothurNMDSplotArrow
arrowdf <- data.frame(labels = taxFile[rownames(arrowmatrix),"Family"], arrowmatrix)
mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black", arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
This result reflects nicely what was in the barplots. Looks like the Ningaloo corals have a different Endozoicomonas OTU than the Red Sea reefs which is correlated with the samples. I’ll look deeper into different Endozoicomonas types (oligotypes) across sites later.
Import nutrient and FCM data and look at Spearman correlations between this data and the sample ordinations
Hbact <- as.data.frame(read.table("meta.Hbact.spearman.corr.axes", header=T))
NH4 <- as.data.frame(read.table("meta.NH4.spearman.corr.axes", header=T))
NN <- as.data.frame(read.table("meta.NN.spearman.corr.axes", header=T))
NO2 <- as.data.frame(read.table("meta.NO2.spearman.corr.axes", header=T))
PEPeuk <- as.data.frame(read.table("meta.PE+Peuk.spearman.corr.axes", header=T))
Peuk <- as.data.frame(read.table("meta.PEUK.spearman.corr.axes", header=T))
po4 <- as.data.frame(read.table("meta.po4.spearman.corr.axes", header=T))
PRO <- as.data.frame(read.table("meta.PRO.spearman.corr.axes", header=T))
silicate <- as.data.frame(read.table("meta.silicate.spearman.corr.axes", header=T))
SYN <- as.data.frame(read.table("meta.SYN.spearman.corr.axes", header=T))
nutrients <- rbind(NH4, NO2, po4, silicate)
FCM <- rbind(Hbact, PEPeuk, Peuk, PRO, SYN)
arrowmatrix = nutrients
arrowdf <- data.frame(labels = arrowmatrix$Feature, arrowmatrix)
arrowmap <- aes(xend =axis2, yend = axis3, x = 0, y = 0, alpha=0.5, shape = NULL, color = NULL, label = labels)
labelmap <- aes(x = axis2, y = axis3 + 0.04, shape = NULL, color = NULL, label = labels, size=1.5)
arrowhead = arrow(length = unit(0.02, "npc"))
mothurNMDSplot <- ggplot(mothurNMDSmeta) +
geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplotArrow = mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black", arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
mothurNMDSplotArrow
arrowmatrix = FCM
arrowdf <- data.frame(labels = arrowmatrix$Feature, arrowmatrix)
arrowmap <- aes(xend =axis2, yend = axis3, x = 0, y = 0, alpha=0.5, shape = NULL, color = NULL, label = labels)
labelmap <- aes(x = axis2, y = axis3 + 0.04, shape = NULL, color = NULL, label = labels, size=1.5)
arrowhead = arrow(length = unit(0.02, "npc"))
mothurNMDSplot <- ggplot(mothurNMDSmeta) +
geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplotArrow = mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black", arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
mothurNMDSplotArrow
PRO = Prochlorococcus
SYN = Synechococcus
PEUK = Photosynthetic Eukaryotes
PE+PEUK= Photosynthetic Eukaryotes that have a high PE fluorescence and are high in Chl as well
HBact = non-pigmented bacteria
Note in these plots that we don’t have data for Indonesia or micronesia (maybe Amy has some), so the vectors cannot point toward those sites and may be a bit misleading - I could draw this with those sites excluded. Anyhow, the Red Sea sites have higher ammonia, while Ningaloo had more silicate and NO2.
For the FCM results, the Red Sea had more Synechococcus and less Prochlorococcus.
Need to import the shared file containing just spist OTUs, then calcualte the simprof clusters based on the braycurtis metric.
spistShared = read.table('micro.spist.0.03.shared')
spistShared = t(spistShared)
rownames(spistShared) = spistShared[,1]
colnames(spistShared) = spistShared[2,]
spistShared = spistShared[,2:81]
spistShared = spistShared[4:4813,]
class(spistShared) <- "numeric"
spistSIMPROF <- simprof(spistShared, num.expected=10, num.simulated=9, method.cluster='average', method.distance='braycurtis', method.transform='identity', alpha=0.05, sample.orientation='column', silent=FALSE)
simprof.plot(spistSIMPROF, leafcolors=NA, plot=TRUE, fill=TRUE, leaflab="perpendicular", siglinetype=1)
## 'dendrogram' with 2 branches and 80 members total, at height 98.82644
Ok, pretty cool but bit difficult to tell which groups are falling out. I’ll try and overlay the significant clusters on top of the nMDS.
After calculating the clusters, make a data frame of the results and add to previous nMDS plot. Need to add these groups to the nMDS data.frame - I’ll do a loop for this.
simprofCLUSTERS = data.frame()
for(j in 1:length(spistSIMPROF$significantclusters)){
if(length(spistSIMPROF$significantclusters[[j]]) > 2){
simprofCLUSTERS <- rbind(simprofCLUSTERS, cbind(j, spistSIMPROF$significantclusters[[j]]))
}
}
rownames(simprofCLUSTERS) <- simprofCLUSTERS[,2]
colnames(simprofCLUSTERS) <- c("simprofCLUSTER", "group")
mothurNMDSmetaSIMP <- merge(mothurNMDSmeta, simprofCLUSTERS, by="row.names")
#plot over nMDS
df_ell <- data.frame()
for(g in levels(mothurNMDSmetaSIMP$simprofCLUSTER)){
df_ell <- rbind(df_ell, cbind(as.data.frame(with(mothurNMDSmetaSIMP[mothurNMDSmetaSIMP$simprofCLUSTER==g,], ellipse(cor(axis2, axis3), scale=c(sd(axis2), sd(axis3)), centre=c(mean(axis2), mean(axis3))))),site=g))
}
nMDSsimprof <- ggplot(data=mothurNMDSmeta, aes(x=axis2, y=axis3, color=site)) +
geom_point() +
scale_color_hue(limits=levels(droplevels(mothurNMDSmeta$site)))
nMDSsimprof
nMDS.mean <- aggregate(df_ell, list(df_ell$site), FUN=mean)
#write.table(df_ell, file="simpBrayIdent.txt")
#write.table(nMDS.mean, file="simpBrayIdentMean.txt")
df_ell_saved <- (read.table("simpBrayIdent.txt"))
df_ell_saved$site <- factor(df_ell_saved$site)
nMDS.mean.saved <- read.table("simpBrayIdentMean.txt")
nMDSsimprof +
geom_path(data=df_ell_saved, aes(x=x, y=y, color=site), size=0.5, linetype=2, show_guide=FALSE) +
annotate("text", x=nMDS.mean.saved$x, y=nMDS.mean.saved$y, label=nMDS.mean.saved$Group.1)
Looks a bit busy but actually some pretty cool clusters coming out here. I went back to the spreadsheet and photos to check out if there were any patterns to the clusters.
mothurNMDSmetaSIMP[mothurNMDSmetaSIMP$simprofCLUSTER==6,“group.x”]
Clusters
3 - 103 RS12 RS15 RS16 RS17 RS18 Rita’s sites RW and RK
5 - RS1 RS2 RS3 RS5 RS6 RS7 Rita’s sites RA and RJ
7 - 52-2 MIC-85-rep2 RS13 Ningaloo 1, Woleai, RK
10 - 75-2 76-2 77-2 all Ningaloo site 4, normal looking Stylophora
11 - 11 49-2 50-2 51-2 53-2 57-2 63-2 64-2 65-2 Ningaloo sites 1-3, normal looking Stylophora
6 - 101 MIC-151 MIC-229 Am Soa, Woleai, Olimareo
13 - 19-rep2 226 230 259 Al Lith, Inner Fsar, Maggie Is
18 - 229 237 256 MIC-220 MIC-226 Al Lith, Inner Fasr, Olimareo
17 - 251 254 MIC-25 Al Fahal, Yap, normal looking Stylophora
20 - 209 257 258 Yanbu, Inner Fsar, contains some skinny fingered Stylophora
23 - 176 206 231 243 244 Yanbu, Al Lith, Al Fahal, almost entirely skinny fingered Stylophora!
31 - 208 227 260 MIC-453 Yanbu, Al Lith, Innser Fsar, Nakuoro, fatter fingers
Looks like we have two types of separation going on here - site and by Stylophora morphology! Pretty cool.
The Indonesian and Ningaloo samples form nice tight clusters based on site. The Red Sea samples don’t cluster by site, but they seem to form clusters based on morphology. Ie. cluster 23 contains almost entirely skinnyer fingered Stylophora.. neat.
It would also be cool to see which OTUs contribute to the differences between thick and thin fingered stylophora, and between the sites.
spistSharedSIMP = read.table('micro.spist.0.03.shared', header=TRUE)
rownames(spistSharedSIMP) <- spistSharedSIMP[,2]
spistSharedSIMP = spistSharedSIMP[,4:4813]
metaFileSIMP <- subset(metaFile, simprof1 != 'NA')
spistDistSIMP <- merge(spistSharedSIMP, metaFileSIMP, by="row.names")
rownames(spistDistSIMP) <- spistDistSIMP[,1]
OTUsSIMP <- spistDistSIMP[,2:4811]
factorsSIMP <- spistDistSIMP[,4812:4818]
spistSIMP <- simper(OTUsSIMP, factorsSIMP$simprof1)
taxFile["Otu000066", "Family"]
## [1] "Pasteurellaceae(100)"
The rows are SIMPER rank, OTU classification, OTU number, and then cumulative contribution to the differences between the clusters.
Cluster 3 vs Cluter 5
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| Phyllobacterium(100) | Vibrio(100) | unclassified(100) | Endozoicomonas(100) |
| Otu000018 | Otu000006 | Otu000066 | Otu000015 |
| 0.3425523 | 0.4223809 | 0.4900698 | 0.5349922 |
Cluster 11 vs Cluster 7
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| unclassified(100) | Pseudomonas(100) | Endozoicomonas(100) | unclassified(79) |
| Otu000027 | Otu000005 | Otu000007 | Otu000046 |
| 0.2156589 | 0.3991708 | 0.4846407 | 0.5075199 |
Cluster 11 vs Cluster 10
| 1 | 2 | 3 | 4 |
|---|---|---|---|
| Endozoicomonas(100) | Pseudomonas(100) | Endozoicomonas(100) | Endozoicomonas(100) |
| Otu000001 | Otu000005 | Otu000007 | Otu000044 |
| 0.1885475 | 0.3257681 | 0.4190131 | 0.4733229 |
Cluster 23 vs Cluster 31
| 1 | 2 |
|---|---|
| Endozoicomonas(100) | unclassified(79) |
| Otu000001 | Otu000012 |
| 0.3697467 | 0.6114984 |
Cluster 31 vs Cluster 10
| 1 | 2 | 3 |
|---|---|---|
| Endozoicomonas(100) | Endozoicomonas(100) | Pseudomonas(100) |
| Otu000001 | Otu000007 | Otu000005 |
| 0.3238094 | 0.4781600 | 0.6161271 |
Cluster 7 vs Cluster 5
| 1 | 2 |
|---|---|
| Phyllobacterium(100) | unclassified(100) |
| Otu000018 | Otu000027 |
| 0.3242466 | 0.5269505 |